home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / emulator / uae-0.000 / uae-0 / uae-0.6.0 / ChangeLog < prev    next >
Text File  |  1996-06-17  |  44KB  |  730 lines

  1. 960617 Fix memory clobber in X86.S when diwfirstword==0.
  2. 960616 Handle programs that don't wait for the blitter by finishing a pending
  3.        blit as soon as a blitter register is written to (regardless of DMACON,
  4.        to be safe).
  5.        Call gui_led only if the LED changed.
  6. 960615 Fixed dual playfield sprite priorities. Optimized dual playfield code
  7.        in X86.S. More work on AGA code. Get joystick status only in
  8.        vsync_handler to speed things up.
  9.        Make blitter fill more intelligent with table lookups instead of loop.
  10. 960614 DOS update from Gustavo. Pass real bitplane pointer to
  11.        bpl_data_differs(), don't calculate it again.
  12. 960610 Fixed silly INTEL_FLAG_OPT bug: The new __asm__ expressions use
  13.        regflags, which is of course _regflags on a.out...
  14.        More BeBox fixes from Christian.
  15.        Make the CIA bank bigger (A0..BF) and relax the CIA A/B selection
  16.        checks to make broken software (Kingsoft's Emerald Mine, reportedly)
  17.        happy.
  18.        Default framerate is now 1.
  19. 960603 New BeBox code from Christian. Fix test for ELF in configure.in.
  20. 960529 genblitter.c: generate blitfunc as a function taking ULONGs and
  21.        returning an ULONG. This makes custom.o about 4500 bytes smaller on the
  22.        x86 by removing worthless size prefixes, and should increase
  23.        performance (better for the cache, and the P6 reportedly doesn't like 
  24.        16 bit instructions anyway).
  25.        memory.c: Load Kickstart in one block and swap bytes after that if
  26.        necessary (eliminates the need for the special bebox load routine)
  27.        custom.c: Some preliminary work for AGA support.
  28. 960528 Saw a real awful piece of code that detects the right mouse button by
  29.        reading a value from POT0DAT, counting up to 25, reading from POT0DAT
  30.        again, and deciding the button is pressed if the value changed. Urgl!
  31.        Added POT0DAT() in custom.c ...
  32.        Gustavo's latest patches.
  33. 960525 Do index pulse handling in CIA_hsync_handler(). Make sure bit 12 in 
  34.        INTREQ gets set on an index pulse. Don't call DISK_Index() for now,
  35.        since this breaks the Workbench.
  36.        The CIA code should _probably_ not be resetting the bits in INTREQ.
  37.        Disable this as an experiment, let's see what breaks.
  38. 960524 Z flag handling for ABCD/SBCD/ADDX/SUBX was wrong (must be clear if not
  39.        zero, was set if zero). Some other flag bugs in these functions fixed.
  40. 960523 gfxlib.c update from Christian Schmitt. Some new Mac code from Ernesto,
  41.        still not all of it, though. Italian keyboard from Alessandro Bissacco.
  42. 960522 Fix the CHK instruction. Implement middle mouse button.
  43. 960515 Fix some Nextstep problems in configure.in.
  44. 960513 New Makefile target "streifenfrei" to remove all output from configure.
  45.        Use autoconf 2.7; 2.9 is buggy.
  46. 960512 Remove BIG_ALIGNMENT hack. Remove superfluous pfield_fetchdata() call
  47.        in pfield_doline_slow_l() that resulted in garbage on the screen.
  48.        Move blttbl array from custom.h to genblitter.c
  49.        Use new lookup tables imm8_table and areg_byteinc in CPU emulation
  50.        instead of ?: expressions.
  51.        GCC appears to generate better code if the opcode is passed as ULONG to
  52.        the CPU emulation functions instead of as UWORD.
  53.        Modify some of the flag emulation __asm__ statements so that GCC uses
  54.        less registers for them.
  55. 960510 Cast malloc() results to char *, for C++ compilers.
  56. 960509 Use test for GCC and __i386__ in options.h to decide whether to use
  57.        intel flag optimization.
  58.        Use test for wish4.0 to decide whether to use the GUI.
  59. 960507 New bebox.cpp from Christian. AF sound patches from Marcus Sundberg.
  60. 960505 Fix the configuration stuff so it works. Fix some bugs in gfxlib.c
  61. 960504 Use GNU autoconf scripts to generate Makefile and sysconfig.h. Add new
  62.        files sysdeps.h that includes the right system header files. Remove
  63.        amiga.h and Makefile.
  64. 960502 More Next code from Ian (new Uae.app directory, 2 bit drawing for
  65.        custom.c).
  66. 960501 Allow the sound driver to set the frequency to a value that is slightly
  67.        different from the requested one.
  68. 960430 Added AmigaOS port from Olaf Barthel.
  69. 960427 Fixed single playfield sprite priorities in X86.S.
  70. 960426 Added new NeXTwin.m from Ian.
  71.        Turn off the blitter delay in line mode.
  72.        Added a CPU optimization from Olivier Raoul: gencpu now reads a file
  73.        "insncount" that can be generated by UAE during execution and generates
  74.        specific functions for the most common opcodes. Not documented yet.
  75. 960414 Reimplemented the fast disk emulation in a more sane way. Also it's
  76.        only done for reads now. (Plus, it no longer works :-/ Need to work
  77.        some more on this).
  78.        In blitter emulation, defer not only the setting of the bltfinish bit,
  79.        but actually defer the whole blit for the number of cycles it will
  80.        take. This makes programs the clear the screen while it is still being
  81.        displayed look much better.
  82.        Changed supervisor mode handling around a bit (was messy).
  83.        New DOS code from Gustavo.
  84. 960412 Removed smart update method 2. Added Alessandro Bissacco's blitter
  85.        optimization patch.
  86.        Fixed some sprite problems: during hysnc, clear sprpos and sprctl, and
  87.        don't do_sprites() in line 0.
  88. 960409 Be a little more intelligent about when to call pfield_linetoscr() from
  89.        pfield_doline_slow(). It's only necessary if a color register changed.
  90.        If it can be deferred to the end of the line, use the the _full
  91.        variants.
  92.        Some CIA TOD fixes.
  93.        Better transdisk, accepts first/last track parameters.
  94. 960405 New function memcmpy(), inline assembler for the i386. Compares two
  95.        memory blocks and copies them at the same time. Used in
  96.        bpl_data_differs.
  97. 960404 French keyboard from Tristan Cavelier. Parallel port emulation from
  98.        Stefan Reinauer.
  99.        Turn bpl?pt and r_bpl?pt into arrays, simplify some code using them.
  100. 960401 Some parts of Ernesto's new Mac sources.
  101. 960331 filesys.c: Close filedescriptors in free_key(). get_path() sometimes
  102.        read uninitialized bytes.
  103.        Minor cleanups all over the place.
  104.        unchain_mnn() leaves sibling intact, but clobbers next. customreset()
  105.        didn't care about that and crashed.
  106.        Use the __asm__("intel_flag_lookup") magic not only for DOS.
  107.        Support 320x300 for X (without LOW_BANDWIDTH).
  108.        Add new function fast_memcmp(), defined as memcmp if __i386__ is
  109.        undefined, otherwise a slightly optimized inline assembly function.
  110. 960329 Some bug fixes in gencpu.c
  111. 960328 Stupid programs write odd playfield modulos into the hw registers...
  112.        Eek! Sometimes, linedescr[] was indexed with a negative value... Add a
  113.        vpos >= minfirstline check to pfield_may_need_update(). I really need
  114.        to rewrite this in Oberon...
  115.        Don't turn off SHM when LOW_BANDWIDTH is selected.
  116.        Keep the nextpos and linepos variables from pfield_doline_slow_?() as
  117.        globals and initialize them in pfield_may_need_udpate().
  118.        Modified alloc_colors256() some more.
  119.        Try to make sprite DMA follow the Amiga DMA slots more closely by
  120.        adding a currhp parameter to do_sprites() and calling it at the end
  121.        of a scanline or in pfield_may_need_update().
  122. 960327 Added Gustavo's latest DOS code, as far as possible. Modified X86.S to
  123.        use a macro SYM() to create symbol names either with underscore or
  124.        without.
  125.        Fixed some very silly SVGAlib lores bugs. Move screen 8 pixels up in
  126.        low resolution.
  127.        Use diwstop instead of diwstart to caclulate the DIW for 320x200 modes.
  128.        Reset it not only in calcdiw(), but also in init_frame().
  129.        Speed up 256 color allocation a little bit.
  130. 960326 New function flush_block() in xwin.c and svga.c. Called from
  131.        do_flush_line() and (new function) do_flush_screen(). Modify struct
  132.        vidbuf_description, new member maxblocklines that records the maximum
  133.        number of scanlines that do_flush_line() should collect before calling
  134.        flush_block(). If it is zero, then flush_line() is used as before.
  135.        This makes the special case stuff for SHM unnecessary, so it's removed.
  136.        Fixed a stupid bug in events code: Put ev_hsync in front of ev_copper,
  137.        so that do_copper gets called with hpos == 0 instead of hpos == 227 at
  138.        the beginning of the line.
  139.        New function init_frame() that sets up some variables, called from 
  140.        customreset() and vsync_handler().
  141.        Move smart update code to pfield_doline() from pfield_doline_h() and 
  142.        ..._l(). Clean up these two with a macro DO_ONE_PLANE, removing
  143.        duplicate code.
  144.        Implement big blits and ECS chip ids. New configuration options
  145.        ECS_AGNUS and ECS_DENISE.
  146.        Implement MOVEP.
  147. 960325 Before calling pfield_may_need_update(), make sure the value that was
  148.        written to a register actually differs from the previous one.
  149.        New expansion code from Stefan Reinauer.
  150.        Modify struct mem_notify_node to contain a pointer to a valid bit 
  151.        instead of the valid bit itself, so that the playfield code has to
  152.        check only one flag to decide whether to draw the line (SU method 2)
  153. 960324 The chip_flags approach has several problems. A flag may cover an area
  154.        in memory that spans two scanlines, or several scanlines may use the
  155.        same area in memory.
  156.        Provide two other, different methods for the smart update:
  157.        1. Save all the bitplane data for each line and compare the chipmem
  158.           with the saved data to decide whether an update is necessary.
  159.        2. Use a chain of memory_notify_node structs instead of a single bit
  160.           for flags. Each scanline owns a set of these structs and chains them
  161.       into the right place, and the chipmem_?put routines walk the chains
  162.       and set the modified bit for each element.
  163.        Unfortunately, both methods are slower than the old one. Especially the
  164.        first one has some advantages though: it speeds up programs that clear
  165.        the screen each update and write the same contents back, and it
  166.        can speed up double-buffering programs at full framerate, since it does
  167.        not have to check whether the bitplane pointers have changed.
  168.        Remember the first and last drawn line for each frame, and pass them to
  169.        flush_screen. Use this in xwin.c for SHM. Modify SHM logic: if smart
  170.        update is selected, call XShmPutImage() from flush_line() instead of 
  171.        from flush_screen(). But gather blocks of consecutive lines to avoid
  172.        calling XShmPutImage() too often.
  173. 960323 "Smart update" method, based very loosely on Alessandro Bissacco's
  174.        work, implemented:
  175.        Add an array chip_flags that records any change made to specific words
  176.        in chip memory.
  177.        Move all the hardware registers relevant to playfield display into a
  178.        new structure bplinfo. Remember the contents of this structure in
  179.        struct line_description for every line on the screen. Avoid redrawing
  180.        in pfield_doline if the screen memory has not been modified for the
  181.        line to be drawn and if the information from the last frame matches
  182.        that in the current frame.
  183. 960322 Duplicate all functions responsible for drawing (pfield_doline,
  184.        pfield_doline_slow, pfield_sprite, pfield_*word_*res) and append _h
  185.        or _l (ah, the golden C++ days, when we had templates... which never
  186.        worked). Modify the *_l functions to support drawing in low resolution
  187.        (i.e. 320x200). Change the options -d and -H to support selecting color
  188.        mode and resolution, thereby getting rid of some SVGALIB_* options.
  189.        Get rid of the old pfield_*word_*res functions.
  190.        Collect information about the minimum diwstart value during the
  191.        previous frame and use that in case 320x200 was selected to fit the
  192.        image on the screen.
  193.        Get rid of HAVE_JOYSTICK (breaks the "-J" option)
  194. 960321 Give up in op_illg() if opcode is 0x4e7b and the exception handler for
  195.        it is NULL. In that case, it's a 68020 Kickstart.
  196. 960319 New Next code from Ian. SunOS target was still screwed (two CFLAGS).
  197.        Turn -x option into a "hair cursor" option. Support multiple mounts,
  198.        but warn if more than one is seen (still does not work with Kick 1.3).
  199.        Integrated Samuel Devulder's new LOW_BANDWIDTH patch.
  200. 960318 Integrated the start of Markus Gietzen's gfx library replacement.
  201.        Changed the interface between custom.c and the graphics code. There has
  202.        to be a buffer holding the data of all the lines on the screen. For
  203.        linear SVGAlib modes, this is the video memory. Eliminated -x option,
  204.        prepare_line(), DrawPixel() and the X_?BIT_SCREEN options, replace with
  205.        3 versions of pfield_linetoscr for different datatypes. Implement
  206.        proper handling of the borders above and below the DIW in custom.c
  207.        instead of in flush_screen().
  208.        Move common code (color allocation) from all the graphics files to new 
  209.        file gfxutil.c.
  210.        Swedish keyboard from Per Olofsson.
  211.  
  212. 960315 Release 0.5.0
  213. 960315 Newest DOS port from Gustavo. New sgi-gcc target.
  214. 960314 Add -lXext to osf target. Use "rb" for fopen() in main.c
  215. 960310 Play a bit with the __asm__ constraints. Implement CHK.
  216. 960307 Fix some stupid Makefile errors. Call parse_cmdline() if no init file
  217.        is found.
  218.        First round of NextStep patches; new file NeXTwin.m
  219.        Stupid bug in custom.c: The #define is called NO_FAST_DISK, not
  220.        NO_FAST_FLOPPY.
  221.        Fix one of the problems the Deform demo had with the blitter: The
  222.        line texture wasn't rotated to the right position in blitter_init().
  223. 960306 Use some black GCC __asm__ magic to calculate flags more quickly
  224.        (config INTEL_FLAG_OPT)
  225.        HAM was broken by pfield_linetoscr changes. Fixed.
  226.        LOW_BANDWIDTH sometimes got confused when the display window changed.
  227. 960305 BCD instructions work well enough for Locomotive Basic on CPE.
  228.        New function parse_cmdline_and_init_file() that reads ~/.uaerc or
  229.        ./.uaerc and adds the options found in those files to those in argv[].
  230.        Patch from Denis Sablic to make disk image filenames runtime 
  231.        configurable. Extend it for the ROM filename.
  232.        Remove some of the run-time configurable stuff from config.h.
  233.        More X keysym fixes (I finally got a proper .Xmodmap ...)
  234.        for SVGAlib: Delete key, and PgUp/PgDn as Amiga keys.
  235.        The sound driver can now handle 22050 Hz and/or 8 bit samples. Both of
  236.        these are the default with LINUX_SOUND_SLOW_MACHINE.
  237.        Also use the SNDCTL_DSP_GETBLKSIZE ioctl and write the buffer when 
  238.        there is enough data.
  239.        Abuse keybuf.c to provide a fake joystick emulation with the numeric
  240.        pad (enable with -J)
  241. 960304 bebox.cpp from Christian.
  242.        Rename pfield_linetoscr_full to pfield_linetoscr_full8.
  243.        More x86 assembly: pfield_linetoscr_full16.
  244. 960303 SunOS target from Dirk Vangestel. Put some not-so-superfluous includes
  245.        back in. Added the DOS specific patches to filesys.c.
  246.        Started x86 assembly optimizations. New file X86.S, includes an
  247.        optimized version of pfield_linetoscr (for 8 bit screens only).
  248.        Don't use SA_RESTART if it isn't defined.
  249.        prepare_line() wasn't called often enough (again...), leading to memory
  250.        corruption and "hit the reset button" bugs when using SVGAlib.
  251. 960226 Get rid of bool, true and false in amiga.h and everywhere else.
  252.        Copy yesterdays code to AF_SOUND code, too.
  253.        Include first round of Christian Bauer's BeBox patches. Add AIX fix
  254.        from Samuel Mackrill.
  255.        Add #include <string.h> and #include <stdlib.h> in some more places.
  256.        Modify gencpu.c and readcpu.c so that immediate types j and J (0..15
  257.        and 1..8) can be merged. Replace HAVE_ONE_GIG... option with a new
  258.        CPU_EMU_SIZE option that can be set to a value in the range 0..5,
  259.        where 0 is minimum size and 5 is equivalent to HAVE_ONE_GIG...
  260. 960225 Remove multiplications in sound code, use a big lookup table.
  261. 960222 Go back to having only one memory bank table of type addrbank instead
  262.        of several function pointer arrays. Eliminate the HAVE_BROKEN_SOFTWARE 
  263.        define by extending the memory bank table to 65536 entries.
  264.        Remove remaining DUALCPU code. Allow BTST src,imm instructions in
  265.        table68k.
  266. 960220 Back out filesys.c change from Stefan Reinauer: don't call V36 specific
  267.        functions in expansion.library.
  268.        Better fix for the filesys.c assign problems by Oliver Moehrke.
  269.        Make new playfield code conditional on EXPERIMENTAL_SCREEN_UPDATE.
  270.        Improve the 64bit variant of said code. Try to get alignment for
  271.        apixels by putting it into a union with a long.
  272.        Kill the child in gui_exit(). Make graphics_init() return a value and
  273.        check it in main.c to see whether graphics were initialized. If not,
  274.        call gui_exit() anyway.
  275.        Use new 256 color allocation routine from svga.c in xwin.c, too.
  276.        Make LOW_BANDWIDTH compile _and_ work (wow...).
  277. 960219 Fix bug in memory.c: When loading 256K Kickstart, copy 256K, not 128K.
  278. 960218 Finished the rest of the UI: reset, debug and quit buttons as well as
  279.        drive LEDs. New target linux-gui; all others use dummy file nogui.c
  280.        for now.
  281. 960217 The GUI now supports inserting and ejecting diskfiles and displays
  282.        their names. Two pipes are used now, one for reading and one for
  283.        writing. Properly wait for the process to start up.
  284.        Use sigaction() instead of signal() in debug.c.
  285.        More fixes for the new display routines: Need to do a final call to
  286.        pfield_*word_*res with the data shifted right from the last fetched
  287.        word.
  288. 960216 Copper & sprite bugfixes from Marco Nelissen. Better X keyboard support
  289.        from Bruno Coste.
  290.        Move my_strdup() from filesys.c to options.h
  291.        New files xui.c, uae-ui (shell script) and uae-ui.tk (wish script).
  292.        These create a GUI for the X version of the emulator. So far, the
  293.        power LED works.
  294. 960215 Don't rely on SVGAlib headers defining any keycodes at all.
  295.        Include Thorsten Frueauf's NetBSD patch. Apparently, the devname
  296.        variable in hardfile.c caused a namespace collision, so rename it to
  297.        uaedevname. Fastmem fixes, debugger help, and ConfigDev allocation in
  298.        hardfile and filesys from Stefan Reinauer.
  299.        xwin.c: Give the window a title.
  300.        Half-implemented the DIVU.L, DIVS.L, MULU.L and MULS.L instructions.
  301. 960213 AF sound system support from Marcus Sundberg. Win95 keyboard support
  302.        for SVGAlib from Thierry Lescot. Added most of Gustavo Goedert's MS-DOS
  303.        port.
  304.        When using the old pfield_*word_*res functions, the gen_pfield_tables()
  305.        function was undefined.
  306.        Hmmm, /dev/brain must have been unmounted when I wrote the new pfield_*
  307.        functions. Now they make sure they access the apixels array only with
  308.        addresses that are multiples of 16 bytes.
  309. 960212 Fix copy&paste bug in cia.c found by Marco Nelissen: Need to call
  310.        RethinkICRB() instead of RethinkICRA() for CIA B timers.
  311.        Added Stefan Reinauers autoconfig area/fastmem support. Added run-time
  312.        options for use_slow_mem and use_fast_mem.
  313.        Oops, the pfield_*word_*res() optimizations break completely on HPs and
  314.        Sparcs. Now use this optimization only if we are using GCC 2.7.
  315.        HPUX fixes in the Makefile. New target hpux-gcc.
  316.        The code for clearing the areas above and below the DIW was trying to
  317.        be a little too clever selecting the color. Just use the current 
  318.        background color.
  319.        Added channel attachment to the sound code. Untested.
  320. 960211 Found some flag setting bugs in the rotate/shift instructions and in
  321.        addx/subx (which I thought I had already fixed) by reimplementing 
  322.        DUALCPU mode to work with Ed's e68k.
  323.        Argh! The copper is completely disabled during DDF in Hires 4 bitplane
  324.        mode - so copper positions 0x30 and 0x34 are about 640 pixels apart.
  325.        The Kickstart uses FF39FFFE to wait for the end of line 256 instead of
  326.        FFDFFFFE as in all the other modes. This is implemented now, but
  327.        probably not 100% correct.
  328.        Added check whether SVGAlib doesn't support our mode.
  329.        If using GCC >= 2.7, define __attribute__((aligned(16))) as
  330.        BIG_ALIGNMENT in config.h. Use it for the apixels array to prevent
  331.        potential problems on the Alpha.
  332.        Tried to make the color selection routine produce better results in 256
  333.        color mode.
  334. 960210 readdisk didn't work at all for large files - fixed.
  335.        In pfield_doline(), clear the apixels array if playfield DMA is off.
  336.        In SPRxCTL(), reset sprite mode when sprpos==sprctl==0
  337.        Rewrite pfield_orword_hires() and friends to use lookup tables. No
  338.        noticeable improvement on my machine, but might be different on other
  339.        machines. Two versions of this code: one using 64bit longs on the Alpha.
  340.        New targets linux-debug and linux-prof.
  341.        Use 1MB slow mem.
  342.        -funroll-loops is a little excessive. Remove it.
  343.        Add support for linear addressing modes for SVGAlib version. Speedup
  344.        is 20-30% on my old 486 VLB. Now, would someone please fix SVGAlib to
  345.        support that for the S3-864 as well?
  346.        Set SVGAlib keyboard mode to DONT_CATCH_CTRLC.
  347.        Change custom.c, xwin.c and svga.c to keep track of the display window 
  348.        and background color and to clear the areas above and below the display
  349.        window if necessary to remove garbage images from previous frames.
  350.        Set the LOF bit in the Kickstart replacement init routine. Also
  351.        initialize CIAs to Kick 1.3-like values.
  352. 960209 Some more -DHAVE_xxx_H options in the Makefile and filesys.c. DEC Alpha
  353.        fixes for filesys.c from Ed and Marcus. HPUX fixes.
  354.        New field in table68k for CPU type, parsed by readcpu and compared to
  355.        CPU_LEVEL which is defined in config.h. New instructions MOVE2C, MOVEC2
  356.        and CAS. Also a new field for priviledge level that is used by gencpu to
  357.        generate tests for regs.s and Exception(8) calls if necessary.
  358.        Move parsing of table68k into a new file build68k.c. Generate a file
  359.        called cpudefs.c containing the information from table68k in 
  360.        machine-readable form. Change readcpu.c to use the array found in 
  361.        cpudefs.c.
  362.        Don't generate the d8(An,Dn) addressing mode in-line. Generate a call to
  363.        get_disp_ea(), which is an inline function in newcpu.h if UAE is
  364.        configured for 68000 emulation; for 68020 emulation, it is defined in
  365.        newcpu.c.
  366.        Debugger could crash on illegals because there was no mnemonic defined
  367.        in lookuptab[].
  368.        Return zero for SERDATR.
  369. 960207 It seems that the copper stops completely if an attempt to write to a
  370.        specific register fails because of COPDANG. Apparently, the Kickstarts
  371.        use this to stop the copper with a 0x00000000 longword. This leaves the
  372.        question why they don't do 0xFFFFFFFE like everybody else.
  373.        Enable 512K slow memory by default.
  374.        Integrate Stefan Reinauers battclock patch that makes it work with
  375.        newer Kickstarts.
  376.        In cia.c, do the little index pulse hack even if dskdmaen==1, because
  377.        DMA is only enabled when dskdmaen==2 (Helps the "Mad Decision" demo).
  378.        Add solaris entry to Makefile (GCC, Openwin, -DHAVE_STATFS_H)
  379.        Define HAVE_STRINGS_H for SGIs, change filesys.c accordingly.
  380. 960206 Build a smaller table instead of cputbl.c. Use readcpu and the smaller
  381.        table to build the cpufunctbl array at run-time.
  382.        Nuked the other half of the old CPU emulator. Reimplemented debugger to
  383.        use the information generated by readcpu.
  384.        Define HAVE_STATFS_H for SGIs in the Makefile, and use that as a test
  385.        in filesys.c instead of #ifndef __linux.
  386.        Hack filesys.c, get_path() to support the assign command.
  387.        Add -fstrength-reduce and -funroll-loops in Makefile to make people
  388.        nervous.
  389.        Rewrite Sam Devulder's LOW_BANDWIDTH patch and add it to xwin.c.
  390. 960205 Forgot some PC-relative bit instructions in table68k.
  391.        Nuked half of the old CPU emulator.
  392.        Split gencpu.c into two parts, new one is called readcpu.c and just
  393.        parses the table68k file. Link it to the main program.
  394.  
  395. 960205 Release 0.4
  396. 960203 filesys.c, action_read(): Slightly more efficient code (translate Amiga
  397.        address to real pointer).
  398.        Moved some common code in the generate_* functions in gencpu.c to a
  399.        separate function.
  400. 960202 Added an experimental fast disk option. Currently turned off by
  401.        default (it's not such a big win).
  402.        Attached sprite fixes (overlapping att. sprites looked bad, Katakis).
  403.        Add sleep(1) before resetting the console to text mode when using
  404.        SVGAlib: this might fix some screen corruption problems.
  405.        Add sprite/playfield priority checking to the most important case
  406.        (single playfield, no HAM).
  407.        In filesys.c, do_find(): open() returns -1 on error, not zero.
  408.        Return ERROR_OBJECT_WRONG_TYPE if do_find() is called for a directory
  409.        (fixes Champions of Krynn harddisk installation).
  410. 960201 Don't abort if sound driver not present, just set produce_sound to 0.
  411.        New files keybuf.c and keybuf.h to record keypresses in the right
  412.        order and without losing any. In cia.c, force 15 scanlines between
  413.        keypresses, just to be sure.
  414.        unixfs.device _does_ work with Kick 1.3: just don't trust what Kick 1.3 
  415.        sends in the startup packet. For now, disable more than one mount per 
  416.        command line.
  417.        Started integrating Ernesto's new Mac sources.
  418.        Remove superfluous includes from some files.
  419. 960131 Added Ed's unixfs.device (great stuff).
  420.        Adding ULONGs to pointers is a bad idea on the Alpha if the ULONG value
  421.        really is signed. Add some casts to LONG in (pc_p + src) expressions
  422.        in genpu.c.
  423.        If DMACON is written and copper DMA is enabled, do a COPJMP1 at once.
  424.        Helps the "Interference" demo.
  425. 960129 More SGI fixes from Ed. Bugfixes and transdisk improvements from Marcus 
  426.        Sundberg.
  427.        Remove EXTRA_DEFINES from Makefile. Breaks some systems.
  428.        Move common sprite code from pfield_doline() and pfield_doline_slow()
  429.        to new function pfield_sprite(). The same sprite may appear more than
  430.        once on the same line, so don't shift out the bits of sprdata[] and
  431.        sprdatb[] while displaying it (Turrican I).
  432.        In xwin.c and svga.c, barf if LINUX_SVGALIB doesn't match the file 
  433.        being compiled.
  434.        Make all .o files depend on config.h in the Makefile.
  435.        No need to exit if sound driver unavailable, but -S given.
  436.        Small debugger fix: Missing space in output.
  437.        Fix for the sprite logic: Specifically, use a state variable indicating
  438.        whether the sprite has been restarted after a VSYNC. Fixes most
  439.        Turrican problems.
  440. 960124 Added Denis Sablic's patch for sound run-time option.
  441.        Added Ed Hanway's patch for better Makefile, X mouse cursor blanking 
  442.        and more SGI compilation fixes.
  443. 960123 Include options.h everywhere.
  444.        Handle 8 bit GrayScale visuals like PseudoColor.
  445.        Remove C++ leftovers from joystick code.
  446. 960122 When using the joystick driver, the button test must come after
  447.        handle_events() in vsync_handler().
  448. 960118 Removed all the remaining C++ comments. Changed all inline keywords to
  449.        __inline__. Define __inline__ if not using gcc.
  450.        Make proper prototypes for everything. Compile with maximum warnings +
  451.        -ansi + -pedantic.
  452.        Remove CIA_cycle(), obsolete.
  453.        Reimplemented the STOP optimization in newcpu.c. Removed DualCPU
  454.        support in CPU emulator.
  455.        Real nasty bug in pfield_doline() fixed: sprxpos could be evaluated as
  456.        negative, with not-so-amusing results. (Need to rewrite this in 
  457.        Oberon to get array bounds checking :-)       
  458. 960117 Heroic effort: Rewrote the thing in C. This might help fix some
  459.        problems with users being unable to compile it.
  460.        Fixed a problem in hsync_handler(): Only call flush_line() for lines
  461.        in the display window, i.e. when we did a prepare_line() before.
  462.        Better code for relative branches: Don't use setpc(getpc()+x) calls,
  463.        increment regs.pc_p instead.
  464. 960116 Reimplemented the function to load the Kickstart ROM. Use stdio instead
  465.        of fstreams since this apparently does not work on the Mac. Detect 256K
  466.        Kickstarts. Detect corrupt ROM images (calculate checksum).
  467.        Added Ernesto Corvi's Mac port. Changed it around a bit, so it
  468.        probably won't compile.
  469. 960115 Reinstate config.h options for X screen depth, so that DrawPixel() can
  470.        be inlined in custom.cc for speed. xlinebuffer is now incremented in
  471.        each call to DrawPixel() (for both X and SVGAlib) to get rid of some
  472.        address calculations.
  473. 960114 Fixed X generic pixel drawing routine for SHM.
  474.        Still trying to fix the harddisk emulation.
  475.        uae.device no longer breaks the debugger (can step through uae.device
  476.        functions now)
  477.        Bugs affecting performance: SPCFLAG_STOP never got reset, and DSKLEN() 
  478.        would set SPCFLAG_DISK even if DMA was being turned off.
  479.        Made slow memory a run-time option.
  480.        Defer interrupts by one CPU instruction to give programs a chance to
  481.        read INTREQR ("Seeing is Believing" and "Substance" demos)
  482.        Added ScrollLock hack for X, too.
  483. 960113 SVGAlib version compiles again. Fixed SVGAlib mouse bug.
  484.        Fixed SHM bug: Maximum scanline is 313, not 312.
  485.        Sometimes, disk.cc missed a side change and would read the wrong data.
  486.        Fixed. Apparently, this was the worst compatibility problem.
  487.        Implemented trace mode.
  488. 960112 Changed layout of class amigamemory a little so that gcc can generate
  489.        better addressing modes.
  490.        Finally wrote functions in gencpu to generate MOVEMs.
  491. 960109 Integrated Ed Hanway's patches for better X support and run-time
  492.        configuration of some options. 
  493.        Got rid of the direct VGA memory access. (Need to do this differently).
  494.        Changed the method of drawing lines: custom.cc now tells the graphics
  495.        code the line number and whether it needs to be doubleed before drawing
  496.        it.
  497.        Added Andre Beck's MIT-SHM patch.
  498.        Remove warnings for newcpu.cc.
  499. 960108 Fixed exceptions in op_illg(): Need to decrement PC.
  500. 960107 Added an "uae.device" resident module at 0xF00000. This emulates a hard
  501.        disk (fixed size 8MB for now).
  502. 960106 Moved some common code from pfield_doline() and pfield_doline_slow() to
  503.        a separate function. This fixes a potential HAM bug (two static vars
  504.        for the same value).
  505.        Sound support for Linux. Works only with graphics off and the CPU
  506.        slowed down.
  507.        Better SVGAlib keyboard support.
  508. 960105 Added AvailMem(), AllocMem(), AllocAbs() and FreeMem() dummies.
  509.        The Hardwired demo times the multiplication instructions and prints
  510.        "This demo don't like Axel" if they are too fast. Apparently, Axel has
  511.        a 68040. Added a WANT_SLOW_MULTIPLY option to config.h.
  512.        Fixed the fast blitter emulation (seems to work now).
  513. 960104 Fixed all the ChangeLog entries from 95 that said 96 (oops??!)
  514.        pfield_may_need_update() should check whether bitplane DMA is on.
  515.        Added ersatz.cc and ersatz.h. The purpose of these files is to
  516.        implement one or two Kickstart functions that are commonly called from
  517.        bootblocks. This should help support some games and demos that only use
  518.        the Kickstart as an initial track loader. So far, it's only good enough
  519.        for one program.
  520. 951223 More intelligent event handling in the CPU emulator. Slightly faster.
  521. 951222 Optimize CPU emulation by inlining cctrue(). Also, the real PC no
  522.        longer needs to be incremented each instruction. The real PC value
  523.        now has to be fetched by m68k_getpc().
  524.        Added direct screen access for SVGAlib, but it didn't help much. I'll
  525.        probably remove it again.
  526.        The gencpu executable is 2M smaller if it allocates memory
  527.        dynamically.
  528. 951216 custom_bput() enhanced a little. Now remembers the value that was 
  529.        written in the other half of the register.
  530.        Apparently, the USEx bits of BLTCON0 are ignored in line draw mode.
  531.        (Silents-Demo)
  532.  
  533. 951212 Release 0.3
  534. 951212 Included Alessandro's battclock patch.
  535.        Fixed mouse autocalibration for wrong-aspect screens.
  536. 951210 Joystick support for Linux.
  537.        Better color matching for 256 color modes.
  538.        Rewrote most of the memory management in plain C, mainly to avoid the
  539.        various template bugs in some compilers, but also because gcc can't
  540.        handle the regparm attribute for virtual functions yet.
  541. 951209 Added Alessandro's patches for automatic mouse calibration.
  542.        Tried to optimize the blitter loop a bit. Doesn't work.
  543. 951205 Added Hannu's patches for diskfile write support.
  544. 951201 More portability fixes, especially for weird compilers that workstation
  545.        vendors ship.
  546. 951125 More keys for X, some keyboard support for SVGAlib (slightly 
  547.        dangerous); beginnings of US keyboard support.
  548. 951124 256 color mode support for SVGAlib. FAST!
  549. 951123 Tiny tweak to central loops in playfield code results in much better
  550.        assembly. Apparently, GCC does not feel too good about optimizing 
  551.        reference variables.
  552. 951113 Bug fix in the events code (nextevent must not be changed while events
  553.        are being processed).
  554. 951112 The playfield can now be drawn with the right aspect (i.e., every line
  555.        twice). Slower, but looks nicer and supports interlaced mode
  556.        (flickerfree!). The first 29 lines (blanking interval) are omitted
  557.        now to fit everything in 800x600.
  558.        Oops, disk drive identification did not work. Fixed, all four drives
  559.        appear now.
  560.        Oops, CIA_reset() was there all the time but never got called.
  561.        Optimized the planar->chunky conversion in pfield_doline() a little.
  562.        This really is time critical.
  563. 951111 If colors change on a line, we might still be able to use the full 
  564.        line update, if the change occurred outside the DIW. Have to be a 
  565.        little careful, though.
  566.        Playfield code now uses real pointers again, but makes sure it can
  567.        read enough bytes to complete the current line without segfaulting.
  568.        Oops, my "better estimate" (see below) was a mistake. Restored the
  569.        original 4 hw cycles per instruction relation. This slows down the
  570.        emulator while booting (more screen refreshs), but speeds up many
  571.        demos that otherwise spend most of their time waiting for a specific
  572.        raster position.
  573.        Playfield modulos must be added immediately when DDF stops. (WOC demo)
  574.        Portability fixes in disk.cc (null pointers).
  575.        Implemented average frame rate calculation ('c' in the debugger).
  576.        Debugger fixes.
  577.        Sprite fixes (height was wrong, wrong priorities in fast update)
  578.        Added an AutoConfig expansion RAM device. The OS seems to recognize
  579.        it, but breaks sometime later (seems to be the same bug that kills
  580.        the emulator when there's RAM at 0xC00000).
  581.        SVGAlib now has mouse support, too.
  582.        HAM mode implemented.
  583. 951110 Implemented fast complete line playfield update. Switches back if
  584.        necessary. Fixed attached sprites bug.
  585.        Copper wait no longer slows down the CPU emulation. (there were
  586.        lots of new copper bugs because of this, but I hope I fixed all
  587.        of them).
  588.        Changed cia?t? from UWORD to ULONG, since there were overflows in
  589.        the assertion (because of 65535+1 == 0).
  590. 951108 The DIVS remainder could have the wrong sign.
  591.        New HAVE_BROKEN_SOFTWARE define in config.h that makes the emulator
  592.        mask out the high byte of all addresses.
  593.        Wrote genblitter.cc and replaced the awful code in blitter_blit()
  594.        and blitter_line() with calls to the generated function.
  595. 951107 Implemented ?BCD. These don't really work yet.
  596.  
  597. 951106 Release 0.2
  598. 951105 Fixed a bug in the new CIA timer code.
  599.        Fixed flag settings for some cases of ADDX/SUBX
  600. 951104 Changed the main loop a bit - call all the *cycle() functions only if
  601.        it is really necessary. I hope everything still works - at least it is
  602.        twice as fast now :-D
  603.        Improved mouse emulation - avoid overflows, permit "wraparound".
  604.        Added debugger 'g' command.
  605.        Removed some useless casts from the CPU emulator.
  606.        Added a configuration option to prevent checks for odd addresses. Only
  607.        very bad programs need this check.
  608. 951103 The sprite emulation sometimes did not work too well, especially with
  609.        dual playfield mode. Hopefully fixed.
  610. 951102 The 10 cycle counter is more like a 5 cycle counter in this
  611.        implementation. (Fine, that makes floppy loading even faster :-)
  612.        Implemented mouse movement. Totally out of sync with the X pointer,
  613.        but at least something.
  614.        Found out about the XAutoRepeatOff() function. Real useful.
  615.        DualCPU mode works again.
  616.        Corrected flag settings for CMPA.W.
  617.        Fixed DIV instructions: Don't change dest in case of overflow.
  618. 951031 The PC is now converted to a real pointer. This is safe (much safer
  619.        than converting bitplane pointers, since the PC always has to be valid)
  620.        and should speed things up a little.
  621. 951029 Some primitive event handling: 2 mouse buttons and 1 joystick button
  622.        are emulated, as well as parts of the keyboard (only german mapping).
  623.        Fixes: Delay values and sprite widths are always LoRes. Playfield 2
  624.        uses colors 9..15.
  625.        Implemented a frame rate configuration option that can speed up the
  626.        emulation quite a bit.
  627. 951028 A-ha. The 68000 has one strange feature after all. MOVEM.W to Dn sign 
  628.        extends the value to a longword.
  629.        Katakis expects that accessing odd addresses causes exception 3, so 
  630.        we have to emulate this. *Sigh*
  631.        Do at least something with the index pulse bit. It's more or less a 
  632.        toggle now.
  633.        Implemented sprites & dual playfields, both with small glitches.
  634. 951027 When LOF is set, the frame is one line longer.
  635. 951026 Implemented a preliminary diskfile type for special formats. Turrican
  636.        boots up correctly (crashes if I want to play a game, though).
  637.        Implemented EHB and added a few missing masking operations in the color
  638.        handling.
  639.        Fixed the absw addressing mode - need to sign extend here as well.
  640. 951025 Fixed another extremely stupid bug, this time in the playfield code.
  641.        Each pixel was calculated four times...
  642.        Increased the size of the apixels array - this was being overrun.
  643. 951024 Fixed an extremely stupid bug in flag settings for byte and word
  644.        operations.
  645.        The "sectors until gap" field must be in the range 1..11 instead of
  646.        0..10, or very bad things will happen if it is used to calculate a
  647.        blit size.
  648. 951021 Don't use real pointers to fetch bitplane data - too many segfaults.
  649.        Delay the copper after executing an instruction, or wait sequences like
  650.        FFDF FFFE 0200 FFFE won't work.
  651.        Some programs expect that the CPU is completely turned off if the
  652.        blitter nasty bit is set. So be it.
  653.        The RSI Megademo chokes when disk DMA fetches two syncs. Leave one out.
  654.        The LOF bit wasn't set correctly.
  655. 951020 Blitter fixes: Load fill carry from FCI each line; keep the masked
  656.        value of bltadat in bltolda
  657.        Give the CPU twice as many "cycles" - this still is not even remotely
  658.        correct, but a better estimate.
  659. 951017 Added SVGAlib support. Unfortunately, my graphics card isn't fully
  660.        supported by the current SVGAlib version.
  661. 951015 More small optimizations to memory.h and custom.cc.
  662.        Added code for 256 color screens. The type of screen has to be
  663.        selected at compile time.
  664. 951014 Modified the memory management to be (hopefully) a little more
  665.        efficient.
  666.        Changed gencpu.cc to generate functions and a big function pointer
  667.        array instead of the old case labels. The generated C++ files now
  668.        compile a lot faster, and the code should be better as well.
  669. 951013 Implemented pseudo POTGOR to keep the RMB from being detected as
  670.        pressed all the time.
  671.        GenerateDecTab() generated TRAP incorrectly.
  672.        Made some more instructions (MOVE.B A0,D0 etc) illegal in gencpu.cc.
  673.        Fixed X colors. Fixed data fetching for HiRes screens.
  674. 951011 EXT.WL instructions set the flags.
  675.        Implemented second CPU emulator, plus "DualCPU" option. The new CPU
  676.        emulator is generated automatically from a file called table68k by
  677.        a program called gencpu.
  678. 951002 Removed version information from the file headers.
  679.        Removed some sillinesses in custom.cc. 
  680.        DSKLEN bug fixed (mask out 0xC000).
  681.        Playfield code rewritten. Now supports horizontal scrolling. Implemented
  682.        some primitive color support.
  683. 950927 Fixed predecrement/postincrement addressing with byte size for the
  684.        stack pointer.
  685. 950926 Fixes to the disk code: Terminate disk DMA, flip disk side, read more
  686.        than just two sectors during disk DMA, fix checksum calculation.
  687.        Fixed copper comparison bugs.
  688.        
  689. 950901 Release 0.1
  690. 950826 bugfix in GenerateDecTab(): LEA.W instructions were generated.
  691. 950312 New file disk.cc, for (guess what) disk support. Doesn't work yet.
  692. 950311 Multiplication instructions were generating 16 bit results.
  693.        Sign extension was wrong in some places.
  694.        Removed bugs in the blitter (one word width: ALWM & AFWM and line mode)
  695.        The Kickstart logo looks perfect now.
  696.        Playfield routine should check BPLCON0 instead of BLTCON0
  697. 950309 ASR D8,D0 is not a valid instruction.
  698.        Bitplane pointers were not incremented.
  699.        Copper comparison didn't work. COP2LC and bitplane pointers were written
  700.        incorrectly. Fixed.
  701.        Something that bears a striking resemblance to the familiar Kickstart
  702.        logo now appears in my X window!
  703. 950306 ROR used to set the X flag. Bug fixes in GenerateDecTab.
  704.        More bug fixes in several 68000 instructions.
  705.        Improved blitter. ?????? KS1.3 doesn't seem to set BLTDMOD on a 
  706.        line draw. What is this??
  707.        Fixed stupid bugs in playfield code.
  708. 950305 fixed bugs in opcode generation and interrupt handling. Implemented 
  709.        STOP. Fixed flag settings: Result wasn't masked. Ooops!!
  710.        ADDQ #imm,An doesn't set flags.
  711.        One-shot timer mode didn't work.
  712.        Implemented blitter, doesn't work.
  713.        Some primitive and slow playfield support, only to make the things that
  714.        hopefully will soon appear visible.
  715. 950304 CIA timers ought to work OK. Copper is emulated.
  716.        Emulator loops infinitely when trying to initialize the console.device
  717. 950303 experiments with X, figured out how to open a window and draw pixels.
  718.        No graphics emulation yet, though.
  719. 950301 Nearly all instructions work.
  720.        Fixed supervisor mode stack.
  721.        The memory manager now handles CIA chips.
  722. 950228 Bug fixes in 68000 code, exceptions and more instructions implemented
  723.        Memory management extended to handle custom chips as well.
  724.        Debugger improved.
  725.        Kickstart passes memory & CPU type test, builds up some system
  726.        structures.
  727. 950227 MC68000 & little debugger for tracing. It can execute the first couple
  728.        of KS1.3 instructions, but doesn't get past the memory test.
  729. 950225 Work begun
  730.